import {config} from './config'
import {Request} from "./request";
import store from '/store/index.js'

export class Tool {
    /**
     * 获取服务器资源
     * @param url:相对路径
     * @returns {string}
     */
    getResources(url) {
        return config.baseUrl + url + "?token=" + this.getToken();
    }

    /**
     * 获取token
     */
    getToken() {
        let token = uni.getStorageSync("token");
        return token;
    }


    /**
     * 微信小程序登录
     * @param store：vuex实例
     * @param fun：回调
     */
    login(fun, err) {
        wx.login({
            success: res => {
                if (res.code) {
                    //发起网络请求
                    new Request().post("/sys-login/wxLogin", {
                        code: res.code
                    }).then(res => {
                        uni.setStorageSync("token", res.token);      // 更新token信息
                        uni.setStorageSync("userInfo", res.userInfo);      // 更新token信息
                        store.commit("setUserInfo", res.userInfo); // 更新用户信息
                        uni.$u.toast("登录成功")
                        if (fun) {
                            fun();
                        }
                    }).catch(err => {
                        //登录失败清楚token
                        uni.removeStorageSync('token');
                        if (err) {
                            err();
                        }
                    })
                } else {
                    uni.$u.toast('登录失败！' + res.errMsg)
                    if (err) {
                        err();
                    }
                }

            }
        })
    }

    /**
     * 退出登录
     * @param state:vuex实例
     * @param fun：回调
     */
    logout(fun) {
        //退出登录清理所有缓存
        uni.clearStorage()
        store.commit("setUserInfo", null); // 更新用户信息
        if (fun) {
            fun();
        }
    }


    /**
     * 统一打印异常信息
     * @param store
     * @param fun
     */
    errMsg() {
        uni.$u.toast("网络异常！请联系管理员")
    }


    /**
     * 设置用户信息到vuex
     */
    setUserInfoToVuex(store, fun) {
        let userinfo = uni.getStorageSync("userInfo");
        store.commit("setUserInfo", userinfo); // 更新用户信息
        if (fun != null && fun !== "") {
            fun();
        }
    }

    /**
     * 切换路由
     */
    skipRoute(url) {
        uni.navigateTo({
            url: url
        })
    }

}




